package com.ruoyi.dmpdatacollect.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.dmp.common.util.DmpStringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.dmpdatacollect.mapper.DmpDcollectDsMapper;
import com.ruoyi.dmpdatacollect.domain.DmpDcollectDs;
import com.ruoyi.dmpdatacollect.service.IDmpDcollectDsService;

/**
 * 数据采集源Service业务层处理
 * 
 * @author MquanZeng
 * @date 2021-12-16
 */
@Service
public class DmpDcollectDsServiceImpl implements IDmpDcollectDsService 
{
    @Autowired
    private DmpDcollectDsMapper dmpDcollectDsMapper;

    /**
     * 查询数据采集源
     * 
     * @param dsId 数据采集源主键
     * @return 数据采集源
     */
    @Override
    public DmpDcollectDs selectDmpDcollectDsByDsId(Integer dsId)
    {
        return dmpDcollectDsMapper.selectDmpDcollectDsByDsId(dsId);
    }

    /**
     * 查询数据采集源列表
     * 
     * @param dmpDcollectDs 数据采集源
     * @return 数据采集源
     */
    @Override
    public List<DmpDcollectDs> selectDmpDcollectDsList(DmpDcollectDs dmpDcollectDs)
    {
        return dmpDcollectDsMapper.selectDmpDcollectDsList(dmpDcollectDs);
    }

    /**
     * 新增数据采集源
     * 
     * @param dmpDcollectDs 数据采集源
     * @return 结果
     */
    @Override
    public int insertDmpDcollectDs(DmpDcollectDs dmpDcollectDs)
    {
        dmpDcollectDs.setCreateTime(DateUtils.getNowDate());
        return dmpDcollectDsMapper.insertDmpDcollectDs(dmpDcollectDs);
    }

    /**
     * 修改数据采集源
     * 
     * @param dmpDcollectDs 数据采集源
     * @return 结果
     */
    @Override
    public int updateDmpDcollectDs(DmpDcollectDs dmpDcollectDs)
    {
        dmpDcollectDs.setUpdateTime(DateUtils.getNowDate());
        return dmpDcollectDsMapper.updateDmpDcollectDs(dmpDcollectDs);
    }

    /**
     * 批量删除数据采集源
     * 
     * @param dsIds 需要删除的数据采集源主键
     * @return 结果
     */
    @Override
    public int deleteDmpDcollectDsByDsIds(Integer[] dsIds)
    {
        return dmpDcollectDsMapper.deleteDmpDcollectDsByDsIds(dsIds);
    }

    /**
     * 删除数据采集源信息
     * 
     * @param dsId 数据采集源主键
     * @return 结果
     */
    @Override
    public int deleteDmpDcollectDsByDsId(Integer dsId)
    {
        return dmpDcollectDsMapper.deleteDmpDcollectDsByDsId(dsId);
    }

    /**
     * 复制数据采集源信息
     *
     * @param dsId 数据采集源主键
     * @return 结果
     */
    @Override
    public AjaxResult copyDatasource(Integer dsId) {
        try{
            // 获取原采集源信息
            DmpDcollectDs oldDS = dmpDcollectDsMapper.selectDmpDcollectDsByDsId(dsId);
            oldDS.setDsName("copy_"+oldDS.getDsName());// 连接名称修改一下
            // 插入新的采集源
            insertDmpDcollectDs(oldDS);
        }catch(Exception e){
            String isDuplicateName = DmpStringUtil.subMiddleString(e.getMessage(), "Duplicate entry '", "' for key 'idx_u_ds_name'");
            if(isDuplicateName.length()>0){
                return AjaxResult.error(isDuplicateName+" 连接名称已存在!!");
            }
            return AjaxResult.error("执行出错，请联系管理员！");
        }
        return AjaxResult.success();
    }

    /**
     * 查询数据采集源下拉选项
     *
     * @return 数据采集源下拉选项
     */
    @Override
    public List<DmpDcollectDs> getSelectOptionsList() {
        return dmpDcollectDsMapper.getSelectOptionsList();
    }
}
